/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.bomt.service;

import com.comac.ins.bomt.domain.*;
import com.comac.ins.bomt.domain.vo.*;
import com.comac.ins.bomt.domain.bo.OriginalBomDetailQuery;
import com.comac.ins.common.core.domain.model.LoginUser;
import com.comac.ins.common.mybatis.core.page.PageQuery;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;

import java.util.List;
import java.util.Map;

/**
 * BomQueryServiceV2
 *
 * @author zhanghongyi
 * @date 2025-01-03
 * @description BomQueryServiceV2
 */
public interface BomQueryServiceV2 {
    /**
     * 分页查询原始装机清单列表.
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param pageQuery     the page query
     * @return the table data info
     */
    TableDataInfo<OriginalBomV2InfoVo> listOriginalByPage(LoginUser loginUser, String aircraftModel,String track, PageQuery pageQuery);

    /**
     * 查询原始装机清单信息.
     *
     * @param loginUser     the login user
     * @param id     id
     * @return 基础信息
     */
    OriginalBomV2InfoVo queryOriginalBomInfoVoById(LoginUser loginUser, Long id);
    /**
     * 分页查询标准装机清单列表.
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param pageQuery     the page query
     * @return the table data info
     */
    TableDataInfo<StandardBomV2InfoVo> listStandardByPage(LoginUser loginUser, String aircraftModel,String track,String section,String mainSection, PageQuery pageQuery);

    /**
     * 分页查询强度数模清单列表.
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param pageQuery     the page query
     * @return the table data info
     */
    TableDataInfo<StrengthBomV2InfoVo> listStrengthByPage(LoginUser loginUser, String aircraftModel,String track,String section,String mainSection, PageQuery pageQuery);

    /**
     * 分页查询原始装机清单明细
     *
     * @param loginUser     the login user
     * @param detailQuery     查询请求
     * @return the table data info
     */
    TableDataInfo<DetailOriginalV2BomVo> queryOriginalDetailByPage(LoginUser loginUser, OriginalBomDetailQuery detailQuery);
    /**
     * 分页查询标准装机清单明细
     *
     * @param loginUser     the login user
     * @param pageQuery     分页请求
     * @param infoId     标准装机清单Id
     * @param name     名称（可选）
     * @param code     编码（可选）
     * @return the table data info
     */
    TableDataInfo<DetailStandardV2BomVo> queryStandardDetailByPage(LoginUser loginUser,PageQuery pageQuery,String aircraftModel,Long infoId,String name, String code);

    /**
     * 分页查询强度数模清单明细
     *
     * @param loginUser     the login user
     * @param pageQuery     分页请求
     * @param name     名称（可选）
     * @param code     编码（可选）
     * @return the table data info
     */
    TableDataInfo<DetailStrengthV2BomVo> queryStrengthDetailByPage(LoginUser loginUser,PageQuery pageQuery,String aircraftModel,String track,String groupType,String name, String code);
    /**
     * 查询原始装机清单信息
     *
     * @param loginUser     the login user
     * @param aircraftModel     机型
     * @param track     主批次号
     * @param subTrack     子批次号
     * @return 清单信息
     */
    OriginalBomV2Info queryOriginalBomInfo(LoginUser loginUser, String aircraftModel, String track, String subTrack);
    /**
     * 通过Id查询原始装机清单信息
     *
     * @param loginUser     the login user
     * @param id     id
     * @return 清单信息
     */
    OriginalBomV2Info queryOriginalBomInfoById(LoginUser loginUser, Long id);
    /**
     * 通过Id查询标准装机清单信息
     *
     * @param loginUser     the login user
     * @param ids     id列表
     * @return 清单信息
     */
    List<StandardBomV2Info> queryStandardBomInfoByIds(LoginUser loginUser, List<Long> ids);
    /**
     * 查询原始装机清单明细
     *
     * @param loginUser     the login user
     * @param aircraftModel     机型
     * @param track     主批次号
     * @param subTrack     子批次号
     * @return the table data info
     */
    List<DetailOriginalV2BomVo> queryOriginalBomDetail(LoginUser loginUser, String aircraftModel, String track, String subTrack);

    /**
     * 根据Id查询标准装机清单信息
     *
     * @param loginUser     the login user
     * @param id    id
     * @return 信息
     */
    StandardBomV2Info queryStandardBomInfoById(LoginUser loginUser, Long id);

    /**
     * 通过Id查询强度数模清单信息
     *
     * @param loginUser     the login user
     * @param id    id
     * @return 信息
     */
    StrengthBomV2Info queryStrengthBomInfoById(LoginUser loginUser, Long id);

    List<StrengthBomV2Info> queryStrengthInfos(LoginUser loginUser,String aircraftModel,String track,String groupType);

    /**
     * 查询强度数模清单明细
     * @param loginUser     the login user
     * @param aircraftModel 机型
     * @param track 批次号
     * @param groupType 分组
     * @return 明细
     */
    List<DetailStrengthV2Bom> queryStrengthDetail(LoginUser loginUser, String aircraftModel, String track, String groupType);
    /**
     * 清单Id查询标准装机清单明细
     *
     * @param loginUser     the login user
     * @param aircraftModel     机型
     * @param infoId            清单Id
     * @return the table data info
     */
    List<DetailStandardV2Bom> queryStandardBomDetailByInfoId(LoginUser loginUser, String aircraftModel, Long infoId);


    List<DetailStandardV2Bom> queryStandardBomDetail(LoginUser loginUser, String aircraftModel, String track,String subTrack);
    /**
     * 列出所有批次号信息
     *
     * @param loginUser     登录用户
     * @param aircraftModel 机型
     * @return 按主批次号分组的信息
     */
    Map<String, List<TrackGroupInfoVo>> listAllTrackInfo(LoginUser loginUser, String aircraftModel);
}
